sequenceDiagram
    participant User
    participant Host as Client

    User->>Host: start debugging
    activate Host

    create participant DA as Debug Adapter
    Host->>DA: start debug adapter
    Host->>DA: initialize request
    activate DA
    create participant Debugger
    DA->>Debugger: start gdb
    DA->>Host: response: capabilities
    deactivate DA


    par Client configures the adapter after `initialized`
        DA-->>+Host: initialized event
        Host->>+DA: setBreakpoints request
        DA->>Debugger: break 'hello.c:main:4'
        DA->>-Host: response: breakpoints

        Host->>+DA: setExceptionBreakpoints request
        DA->>Debugger: catch
        DA->>-Host: response: status

        Host->>+DA: configurationDone request
        DA->>-Host: response: status
        deactivate Host
    and Client issues a launch request after receiving capabilities
        Host->>DA: launch request
        activate DA
    end


    DA->>Debugger: file 'a.out'
    DA->>Debugger: run
    DA->>Host: response: status
    deactivate DA
